package com.qigao.mall.service.impl;

import com.qigao.mall.api.MerAdminService;
import com.qigao.mall.commons.dto.MerAdminCreateDto;
import com.qigao.mall.commons.dto.MerAdminDto;
import com.qigao.mall.commons.enums.StatusEnum;
import com.qigao.mall.jdbc.mapper.TbMerAdminMapper;
import com.qigao.mall.jdbc.model.TbMerAdmin;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Service
public class MerAdminServiceImpl implements MerAdminService {
    @Resource
    private TbMerAdminMapper tbMerAdminMapper;

    @Override
    public void create(MerAdminCreateDto merAdminCreateDto) {
        TbMerAdmin tbMerAdmin=new TbMerAdmin();
        BeanUtils.copyProperties(merAdminCreateDto,tbMerAdmin);
        tbMerAdmin.setCreateNo(merAdminCreateDto.getOperNo());
        tbMerAdmin.setCreateTime(new Date());
        tbMerAdmin.setModiNo(merAdminCreateDto.getOperNo());
        tbMerAdmin.setModiTime(new Date());
        tbMerAdminMapper.insertSelective(tbMerAdmin);
    }

    @Override
    public void enableDisable(Long id, String currentUserNo) {
        TbMerAdmin tbMerAdmin=new TbMerAdmin();
        tbMerAdmin.setId(id);
        tbMerAdmin.setModiNo(currentUserNo);
        tbMerAdmin.setModiTime(new Date());
        tbMerAdminMapper.enableDisable(tbMerAdmin);
    }

    @Override
    public  List<MerAdminDto> findListByMerNo(String merNo) {
        List<TbMerAdmin> tbMerAdmins= tbMerAdminMapper.selectByMerNo(merNo);
        List<MerAdminDto> merAdminDtos=new ArrayList<>();
        if(tbMerAdmins!=null && tbMerAdmins.size()>=1){
            for(TbMerAdmin tbMerAdmin:tbMerAdmins){
                MerAdminDto merAdminDto=new MerAdminDto();
                BeanUtils.copyProperties(tbMerAdmin,merAdminDto);
                merAdminDto.setValidStatusName(StatusEnum.getNameByCode(merAdminDto.getValidStatus()));
                merAdminDtos.add(merAdminDto);
            }
        }
        return merAdminDtos;
    }

    @Override
    public List<MerAdminDto> findListByUserNo(String userNo) {
        List<TbMerAdmin> tbMerAdmins= tbMerAdminMapper.selectByUserNo(userNo);
        List<MerAdminDto> merAdminDtos=new ArrayList<>();
        if(tbMerAdmins!=null && tbMerAdmins.size()>=1){
            for(TbMerAdmin tbMerAdmin:tbMerAdmins){
                MerAdminDto merAdminDto=new MerAdminDto();
                BeanUtils.copyProperties(tbMerAdmin,merAdminDto);
                merAdminDto.setValidStatusName(StatusEnum.getNameByCode(merAdminDto.getValidStatus()));
                merAdminDtos.add(merAdminDto);
            }
        }
        return merAdminDtos;
    }

    @Override
    public int countEnableNum(String merNo, String userNo) {
        return tbMerAdminMapper.countEnableNum(merNo,userNo);
    }
}
